package org.dtp.enums;

/**
 * 拒绝策略枚举
 *
 * @author wangyiqi
 */
public enum RejectedExecutionHandlerEnum {

    /**
     * 丢弃任务并抛出RejectedExecutionException异常
     */
    ABORT_POLICY("AbortPolicy"),
    /**
     * 丢弃任务，但是不抛出异常
     */
    DISCARD_POLICY("DiscardPolicy"),
    /**
     * 丢弃队列最前面的任务，重新提交被拒绝的任务
     */
    DISCARD_OLDEST_POLICY("DiscardOldestPolicy"),
    /**
     * 由调用线程处理该任务
     */
    CALLER_RUNS_POLICY("CallerRunsPolicy");

    RejectedExecutionHandlerEnum(String type) {
        this.type = type;
    }

    /**
     * 类型
     */
    private final String type;

    public String type() {
        return this.type;
    }

    public static RejectedExecutionHandlerEnum find(String type) {
        for (RejectedExecutionHandlerEnum value : RejectedExecutionHandlerEnum.values()) {
            if (value.type.equals(type)) {
                return value;
            }
        }
        return null;
    }
}
